Display a file system in a JTree view :: 자바네트워크I/O[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

자바네트워크I/O
[1]
등록일:2008-03-12 09:51:36 (0%)
작성자:
제목:Display a file system in a JTree view
import  java.awt.BorderLayout;
import  java.awt.Color;
import  java.awt.Container;
import  java.awt.Dimension;
import  java.io.File;
import  java.util.Collections;
import  java.util.Vector;

import  javax.swing.BoxLayout;
import  javax.swing.JFrame;
import  javax.swing.JPanel;
import  javax.swing.JScrollPane;
import  javax.swing.JTree;
import  javax.swing.event.TreeSelectionEvent;
import  javax.swing.event.TreeSelectionListener;
import  javax.swing.tree.DefaultMutableTreeNode;

/**
  *  Display  a  file  system  in  a  JTree  view
  *  
  *  @version  $Id:  FileTree.java,v  1.9  2004/02/23  03:39:22  ian  Exp  $
  *  @author  Ian  Darwin
  */
public  class  FileTree  extends  JPanel  {
    /**  Construct  a  FileTree  */
    public  FileTree(File  dir)  {
        setLayout(new  BorderLayout());

        //  Make  a  tree  list  with  all  the  nodes,  and  make  it  a  JTree
        JTree  tree  =  new  JTree(addNodes(null,  dir));

        //  Add  a  listener
        tree.addTreeSelectionListener(new  TreeSelectionListener()  {
            public  void  valueChanged(TreeSelectionEvent  e)  {
                DefaultMutableTreeNode  node  =  (DefaultMutableTreeNode)  e
                        .getPath().getLastPathComponent();
                System.out.println("You  selected  "  +  node);
            }
        });

        //  Lastly,  put  the  JTree  into  a  JScrollPane.
        JScrollPane  scrollpane  =  new  JScrollPane();
        scrollpane.getViewport().add(tree);
        add(BorderLayout.CENTER,  scrollpane);
    }

    /**  Add  nodes  from  under  "dir"  into  curTop.  Highly  recursive.  */
    DefaultMutableTreeNode  addNodes(DefaultMutableTreeNode  curTop,  File  dir)  {
        String  curPath  =  dir.getPath();
        DefaultMutableTreeNode  curDir  =  new  DefaultMutableTreeNode(curPath);
        if  (curTop  !=  null)  {  //  should  only  be  null  at  root
            curTop.add(curDir);
        }
        Vector  ol  =  new  Vector();
        String[]  tmp  =  dir.list();
        for  (int  i  =  0;  i  <  tmp.length;  i++)
            ol.addElement(tmp[i]);
        Collections.sort(ol,  String.CASE_INSENSITIVE_ORDER);
        File  f;
        Vector  files  =  new  Vector();
        //  Make  two  passes,  one  for  Dirs  and  one  for  Files.  This  is  #1.
        for  (int  i  =  0;  i  <  ol.size();  i++)  {
            String  thisObject  =  (String)  ol.elementAt(i);
            String  newPath;
            if  (curPath.equals("."))
                newPath  =  thisObject;
            else
                newPath  =  curPath  +  File.separator  +  thisObject;
            if  ((f  =  new  File(newPath)).isDirectory())
                addNodes(curDir,  f);
            else
                files.addElement(thisObject);
        }
        //  Pass  two:  for  files.
        for  (int  fnum  =  0;  fnum  <  files.size();  fnum++)
            curDir.add(new  DefaultMutableTreeNode(files.elementAt(fnum)));
        return  curDir;
    }

    public  Dimension  getMinimumSize()  {
        return  new  Dimension(200,  400);
    }

    public  Dimension  getPreferredSize()  {
        return  new  Dimension(200,  400);
    }

    /**  Main:  make  a  Frame,  add  a  FileTree  */
    public  static  void  main(String[]  av)  {

        JFrame  frame  =  new  JFrame("FileTree");
        frame.setForeground(Color.black);
        frame.setBackground(Color.lightGray);
        Container  cp  =  frame.getContentPane();

        if  (av.length  ==  0)  {
            cp.add(new  FileTree(new  File(".")));
        }  else  {
            cp.setLayout(new  BoxLayout(cp,  BoxLayout.X_AXIS));
            for  (int  i  =  0;  i  <  av.length;  i++)
                cp.add(new  FileTree(new  File(av[i])));
        }

        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}


디렉토리  구조  트리구조  형식으로  출력
[본문링크] Display a file system in a JTree view
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2518
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.